home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_actor_robotsc.cog < prev    next >
Text File  |  1999-11-15  |  5KB  |  204 lines

  1. # Jones 3D Cog Script
  2. #
  3. # actor_RobotSc.cog
  4. #
  5. # Special case behavior for the scissor robot
  6. #
  7. # [MDR] 
  8. #
  9. # (C) 1999 LucasArts Entertainment Co. All Rights Reserved
  10. # ========================================================================================
  11.  
  12. symbols
  13.  
  14.     message        startup
  15.     message        created
  16.     message        aievent
  17.     message        damaged
  18.     message        killed
  19.  
  20. # *********************** SUBROUTINES **************************
  21.     flex        RobotActivate            local
  22.     flex        RobotDeactivate            local
  23.  
  24. # ************************** TEMPLATES *************************
  25.     template    tpl_glow=+robotglow_lg    local
  26.  
  27. # *********************** MISC LOCAL VARS **********************
  28.     thing        t_sender                local
  29.     thing        t_glow                    local
  30.  
  31.     int            eventType                local
  32.     flex        f_userData                local
  33.     int            n_damageType            local
  34.     int            n_damageAmount            local
  35.  
  36.     int            FLAG_SETARMEDMODE        local
  37.     int            FLAG_FIRE                local
  38.  
  39.     vector        vec_pos                    local
  40.  
  41. end
  42.  
  43. # ========================================================================================
  44. code
  45.  
  46. # ........................................................................................
  47. startup:
  48.  
  49.     FLAG_SETARMEDMODE    = 0x20;
  50.     FLAG_FIRE            = 0x40;
  51.  
  52.     return;
  53.  
  54.  
  55. # ........................................................................................
  56. created:
  57.  
  58.     t_sender = GetSenderRef();
  59.  
  60.     AISetMode(t_sender, 0x8000000);                        # Set MODE_ARMOREDSKIN
  61.     AISetMode(t_sender, 0x10000);                        # Set MODE_WANTALLEVENTS
  62.     AISetMode(t_sender, 0x2000000);                        # Set MODE_NOCHASING
  63.  
  64.     SetArmedMode(t_sender, 7);                            # Switch to non-active armed mode
  65.  
  66.     SetThingUserData(t_sender, 0);
  67.  
  68.     return;
  69.  
  70.  
  71. # ........................................................................................
  72. aievent:
  73.  
  74.     t_sender    = GetSenderRef();
  75.     f_userData    = GetThingUserData(t_sender);
  76.     eventType    = GetParam(0);
  77.  
  78.     if ( BITTEST(f_userData, FLAG_SETARMEDMODE) )        # If an armed mode change pending, bail
  79.         return;
  80.  
  81.     if ( eventType == 0x40 )                            #---- EVENT_MOVETARGETCHANGED
  82.     {
  83.         if ( AIGetArmedMode(t_sender) == 7 )                # Non-active armed mode?
  84.         {
  85.             call RobotActivate;
  86.         }
  87.     }
  88.  
  89.     if ( BITTEST(eventType, 0x80800 ) )                    #---- EVENT_GOAL(UNREACHABLE|REACHED)
  90.     {
  91.         if ( !BITTEST(AIGetMode(t_sender), 0x202) )
  92.         {
  93.             call RobotDeactivate;
  94.         }
  95.     }
  96.  
  97.     return;
  98.  
  99.  
  100. # ........................................................................................
  101. damaged:
  102.  
  103.     t_sender        = GetSenderRef();
  104.     n_damageAmount    = GetParam(0);
  105.     n_damageType    = GetParam(1);
  106.  
  107.     if ( BITTEST(n_damageType, 0x07) )                        # DAMAGE_(IMPACT|ENERGY|FIRE)?
  108.     {
  109.         if ( !BITTEST(GetActorFlags(t_sender), 0x40000) )
  110.         {
  111.             PlayMode(t_sender, 61, 0);                        # Play the deflected anim
  112.         }
  113.         else
  114.         {
  115.             if ( BITTEST(n_damageType, 0x01) )                # DAMAGE_IMPACT?
  116.             {
  117.                 PlaySoundClass(t_sender, 85);                # Play ricochet sound
  118.             }
  119.         }
  120.     }
  121.  
  122.     if ( BITTEST(n_damageType, 0x18) )                        # DAMAGE_(FISTS|WHIP)?
  123.     {
  124.         ReturnEx(0);
  125.     }
  126.  
  127.     return;
  128.  
  129.  
  130. # ........................................................................................
  131. killed:
  132.  
  133.     t_sender    = GetSenderRef();
  134.  
  135.     t_glow = GetThingAttachedThing(t_sender, 13);
  136.     if ( t_glow > -1 )
  137.     {
  138.         DestroyThing(t_glow);
  139.     }
  140.  
  141.     return;
  142.  
  143.  
  144. # ===================================================================
  145. #    Subroutines
  146. # ===================================================================
  147.  
  148. # ........................................................................................
  149. # Assumes t_sender has been set
  150. # ........................................................................................
  151. RobotActivate:
  152.  
  153.     f_userData    = GetThingUserData(t_sender);
  154.  
  155.     ResetThing(t_sender);
  156.     PlayMode(t_sender, 69, 0);                        # Play the stand to walk anim
  157.     PlaySoundClass(t_sender, 131);                    # Play spin up sound
  158.     SetArmedMode(t_sender, 0);                        # Switch to active armed mode
  159.     PlaySoundClass(t_sender, 123);                    # Play hover sound
  160.  
  161.     vec_pos    = VectorAdd( GetThingPos(t_sender), '0 0 -0.04' );
  162.     t_glow    = CreateThingAtPos(tpl_glow, FindNewSectorFromThing(t_sender, vec_pos), vec_pos, '0 0 0');
  163.     if ( t_glow > -1 )
  164.     {
  165.         AttachThingToThingEx(t_glow, t_sender, 0x08);
  166.     }
  167.  
  168.     SetThingUserData(t_sender, f_userData);
  169.  
  170.     return;
  171.  
  172. # ........................................................................................
  173. # Assumes t_sender has been set
  174. # ........................................................................................
  175. RobotDeactivate:
  176.  
  177.     f_userData = GetThingUserData(t_sender);
  178.     f_userData = BITSET(f_userData, FLAG_SETARMEDMODE);
  179.     SetThingUserData(t_sender, f_userData);
  180.  
  181.     StopThing(t_sender);
  182.     ResetThing(t_sender);
  183.     SetArmedMode(t_sender, 7);                        # Switch to non-active armed mode
  184.     StopSoundClass(t_sender, 123);                    # Stop hover sound
  185.     PlaySoundClass(t_sender, 132);                    # Play spin down sound
  186.     PlayMode(t_sender, 70, 0);                        # Play the walk to stand anim
  187.  
  188.     t_glow = GetThingAttachedThing(t_sender, 13);
  189.     if ( t_glow > -1 )
  190.     {
  191.         DestroyThing(t_glow);
  192.     }
  193.  
  194.     f_userData = GetThingUserData(t_sender);
  195.     f_userData = BITCLEAR(f_userData, FLAG_SETARMEDMODE);
  196.     SetThingUserData(t_sender, f_userData);
  197.  
  198.     return;
  199.  
  200.  
  201. end
  202.  
  203.  
  204.